home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
basic
/
pbtool.exe
/
PBSEARCH.BAS
< prev
next >
Wrap
BASIC Source File
|
1991-11-11
|
2KB
|
78 lines
'----------------------------------------------------------
' PROGRAM: PBSEARCH.BAS PROGRAMMER: A. KELLETT
' DATE-WRITTEN: 06/12/91
' USING POWER BASIC V2.10A
'
' THIS PROGRAM ALLOWS THE USER TO SEARCH FOR SPECIFIED
' TEXT WITHIN A FILE
' VERSION: 1.01 LAST UPDATED: 06/14/91
'----------------------------------------------------------
CLS
BLOCKSIZE% = 30000
PRINT " THIS PROGRAM SEARCHES A FILE FOR A SPECIFIC TEXT STRING."
PRINT " IT WILL REPORT (IF FOUND), EXACTLY WHERE THE TEXT WAS WITHIN"
PRINT " THE FILE AND WILL DISPLAY TEXT FOLLOWING THE FOUND TEXT."
PRINT:PRINT
INPUT "PROGAM TO SEARCH: ";FILENAME$
INPUT "TEXT TO FIND : ";TEXT$
IF FILENAME$ = "" OR TEXT$ = "" THEN
PRINT "PROGRAM NAME MUST BE 1-12 CHARACTERS AND THE TEXT ENTERED"
PRINT "MUST BE ONE OR MORE CHARACTERS."
LOCATE 22,1
END
END IF
OPEN FILENAME$ FOR BINARY AS #1
IF LOF(1) < 1 THEN
PRINT "THE INPUT FILE DOES NOT EXISTS."
CLOSE #1
KILL FILENAME$
DELAY 2.5
LOCATE 22,1
END
END IF
CLOSE #1
OPEN FILENAME$ FOR BINARY AS #1
FILE1EOF& = LOF(1)
GETLOOP:
BASEADDR = BASEADDR + BYTES
IF FILE1EOF& - LOC(1) => BLOCKSIZE% THEN
BYTES = BLOCKSIZE%
ELSE
BYTES = FILE1EOF& - LOC(1)
END IF
GET$ 1, BYTES, TEMP$
L = INSTR(TEMP$, TEXT$)
IF L THEN
CURRENT& = CURRENT& + L - 1
PRINT "THE TEXT ";CHR$(34);TEXT$;CHR$(34);" WAS FOUND"
PRINT "AT BYTE NUMBER ";CURRENT&;" OF FILE ";FILENAME$
SEEK 1, CURRENT&
TEMP$ = ""
IF CURRENT& < (FILE1EOF& - 41) THEN
GET$ 1, 40, FOUNDSTRING$
ELSE
X = FILE1EOF& - CURRENT&
FOR I% = 1 TO X
GET$ 1, X, TEMP$
FOUNDSTRING$ = FOUNDSTRING$ + TEMP$
TEMP$ = ""
NEXT I%
END IF
PRINT:PRINT "DATA : ";FOUNDSTRING$
LOCATE 18,1
CLOSE
END
ELSE
CURRENT& = LOC(1) - 2000
SEEK 1, LOC(1) - 2000
IF BYTES = BLOCKSIZE% THEN
GOTO GETLOOP
END IF
END IF
PRINT "THE TEXT ";CHR$(34);TEXT$;CHR$(34);_
" WAS NOT FOUND IN FILE: ";FILENAME$
CLOSE:END